package utils

import (
	"crypto/md5"
	"encoding/hex"
	"encoding/json"
	"gitee.com/gopher2011/go-zero-gva/internal/svc"
	"github.com/satori/go.uuid"
	"net/http"
)

func MD5V(str []byte) string {
	h := md5.New()
	h.Write(str)
	return hex.EncodeToString(h.Sum(nil))
}

// 从 *http.Request 中获取从jwt解析出来的用户ID
func GetUserID(r *http.Request)uint{
	if claims := r.Header.Get("claims");claims == ""{
		return 0
	}else {
		var waitUse svc.CustomClaims
		if err := json.Unmarshal([]byte(claims), &waitUse);err !=nil {
			return 0
		}
		return waitUse.ID
	}
}

// 从 *http.Request 中获取从jwt解析出来的用户UUID
func GetUserUuid(r *http.Request) uuid.UUID {
	if claims := r.Header.Get("claims"); claims == "" {
		return uuid.UUID{}
	} else {
		var waitUse svc.CustomClaims
		if err := json.Unmarshal([]byte(claims), &waitUse);err !=nil {
			return uuid.UUID{}
		}
		return waitUse.UUID
	}
}

// 从 *http.Request 中获取从jwt解析出来的用户角色id
func GetUserAuthorityId(r *http.Request) string {
	if claims := r.Header.Get("claims"); claims == "" {
		return ""
	} else {
		var waitUse svc.CustomClaims
		if err := json.Unmarshal([]byte(claims), &waitUse);err !=nil {
			return ""
		}
		return waitUse.AuthorityId
	}
}

// 从 *http.Request 中获取从jwt解析出来的用户角色id
func GetUserInfo(r *http.Request) *svc.CustomClaims {
	if claims := r.Header.Get("claims"); claims == "" {
		return nil
	} else {
		var waitUse svc.CustomClaims
		if err := json.Unmarshal([]byte(claims), &waitUse);err !=nil {
			return nil
		}
		return &waitUse
	}
}
